/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package systole.math;

import systole.domain.signals.FinalSignal;
import systole.domain.signals.Segment;


/**
 *
 * @author user
 */
public interface Derivative {

    /**
     * @param segment segment to derivate
     * @return segmentn derivated
     */
    public FinalSignal derivate(Segment segment);

    /**
     * @param segment
     * @return get the first derivative
     */
    public Segment getFirstDerivative(Segment segment);

    /**
     * @param segment
     * @return get the second derivative
     */
    public Segment getSecondDerivative(Segment segment);

    /**
     * @param segment
     * @return get the third derivative
     */
    public Segment getThirdDerivative(Segment segment);

    /**
     * @param segment
     * @return get the fourth derivative
     */
    public Segment getFourthDerivative(Segment segment);
}
